package com.education.platform.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.education.platform.entity.AuditLog;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 审计日志服务接口
 *
 * @author education-platform
 * @since 2024-09-27
 */
public interface AuditLogService {

    /**
     * 记录审计日志
     */
    void log(String action, String targetType, Long targetId, Object oldValue, Object newValue, String remark);

    /**
     * 根据ID获取日志
     */
    AuditLog getAuditLogById(Long id);

    /**
     * 分页查询审计日志
     */
    IPage<AuditLog> getAuditLogPage(Page<AuditLog> page, Long adminId, String action, 
                                    String targetType, LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 获取管理员的操作日志
     */
    List<AuditLog> getLogsByAdminId(Long adminId);

    /**
     * 获取某个对象的操作日志
     */
    List<AuditLog> getLogsByTarget(String targetType, Long targetId);

    /**
     * 统计操作次数
     */
    Integer countByAction(String action, LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 清理过期日志
     */
    void cleanOldLogs(Integer days);
}

